/*
 * Copyright (c) 2022，公司名称
 * All rights reserved.
 * 文件名称：low_uart.h
 * 摘要：高边串口
 * 当前版本：V1.0.0,WCD,2023/1/10,初版
 * 历史版本：Vx.x.x，编写者/修改者，修改时间，修改内容（重大发布时，总结重点变更内容）
 */

#ifndef LOW_ADC_H
#define LOW_ADC_H

/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓应用层数据定义开始↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
#if 1

/*600k = 4016*/
#define NTC_OPEN (4016u)
/*100 = 34*/
#define NTC_SHORT (34u)

#define ADC0_BUFF_NUM      4U                                                   /* ADC BUFF 数量(与采样通道数据一致) */
#define ADC0_BUFF_LEN      10U                                                  /* ADC BUFF 长度 */

#define LOW_ADC0_BUFF_NUM      4U                                                   /* ADC BUFF 数量(与采样通道数据一致) */
#define LOW_ADC0_BUFF_LEN      10U                                                  /* ADC BUFF 长度 */

/*AD 采样的原始信号  (由于程序处理的缘故，结构体 ADC_ORIG_DATA_DEF 内只能添加 ADC_ORIG_DATA_TYPE_DEF 成员) */
typedef struct
{
    uint16_t wave[ADC0_BUFF_LEN];                                            /*采样AD值 */
    uint16_t sum;                                                            /*采样AD值的总和 */
    uint16_t max;                                                            /*采样AD值最大 */
    uint16_t min;                                                            /*采样AD值最小 */
    uint16_t avg;                                                            /*采样AD平均值 */
} ADC_ORIG_DATA_TYPE_DEF;
typedef struct
{
    ADC_ORIG_DATA_TYPE_DEF V5_VCC;                                             /*  电源电压 */
    ADC_ORIG_DATA_TYPE_DEF V_SYS;                                              /*  系统电压 */
    ADC_ORIG_DATA_TYPE_DEF LF_CINT;                                            /*  低频 */
    ADC_ORIG_DATA_TYPE_DEF IG1;                                                /*  IG1驱动芯片电流 */
    //ADC_ORIG_DATA_TYPE_DEF  IG2;                                                /*  IG2ACC驱动芯片电流 */
    //ADC_ORIG_DATA_TYPE_DEF  FLDoorSW;                                           /*  前左门把手诊断 */
    //ADC_ORIG_DATA_TYPE_DEF  ST_RelayHSD;                                        /*  启动输出电压检测 */
    //ADC_ORIG_DATA_TYPE_DEF  ST_RelayDR;                                         /*  启动反馈电压检测 不用 */
    //ADC_ORIG_DATA_TYPE_DEF  ACC_Relay;                                          /*  ACC输出诊断 */
    //ADC_ORIG_DATA_TYPE_DEF  IG1_Realy_SPI;                                      /*  IG1 SPI输出诊断 */
    //ADC_ORIG_DATA_TYPE_DEF  FRDoorSW;                                           /*  前右门把手诊断 */
    //ADC_ORIG_DATA_TYPE_DEF  IG2_Relay;                                          /*  IG2输出诊断 */
    //ADC_ORIG_DATA_TYPE_DEF  IG1_Relay;                                          /*  IG1输出诊断 */
    //ADC_ORIG_DATA_TYPE_DEF  P_N_Relay;                                          /*  PN继电器诊断 不用 */

} ADC_ORIG_DATA_DEF;
typedef struct
{
    ADC_ORIG_DATA_TYPE_DEF PCB_temp;//ADC0_CH4
    ADC_ORIG_DATA_TYPE_DEF sensor1_out;//ADC0_CH12
    ADC_ORIG_DATA_TYPE_DEF sensor2_in;//ADC0_CH6
    ADC_ORIG_DATA_TYPE_DEF Vbat; //ADC0_CH3
} low_ADC_ORIG_DATA_struct;
extern low_ADC_ORIG_DATA_struct low_ADC_OrgiData; /* ADC 采样原始数据 */
#endif
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑应用层数据定义结束↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/


#define WATERMARK_VALUE (9U)
typedef enum
{
  ADC_CH4 = 0,
  ADC_CH12,
  ADC_CH6,
  ADC_CH3
} channel_ADC;
void low_adc_sw_clock_init(void);
void low_adc_sw_init(void);
void Adc_Sw_Channel_switching(void);

/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓应用层函数定义开始↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
#if 1
#endif
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑应用层函数定义结束↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/

#endif